/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package comunicacao;

import arrayManipulation.Conversion;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;

/**
 *
 * @author Du
 */
public class Comunicacao {
    
    public static int[] recebe(ServerSocket servSock, int tam) throws IOException{
        
        byte[] byteBuffer = new byte[tam*4]; // Buffer de recpcao
        Socket clntSock = servSock.accept(); // Aceita a conexao com o cliente

        System.out.println("Atendimento do cliente " + clntSock.getInetAddress().getHostAddress() + " na porta " + clntSock.getPort());

        InputStream in = clntSock.getInputStream();


        int[] rcvdArray = new int[tam];
            // Recebe dados atÃ© que a conexao com o cliente seja finalizada, indicada pelo -1 
            while (in.read(byteBuffer) != -1) {
                rcvdArray = Conversion.byteToInt(byteBuffer);
                /*System.out.println("rcvdArray1: ");
                for (int i = 0; i < rcvdArray1.length; i++) {
                    System.out.println(rcvdArray1[i]);
                }*/
                //Qsort.quick_sort(rcvdArray1, 0, rcvdArray1.length);
                /*System.out.println("rcvdArray1 (sorted): ");
                for (int i = 0; i < rcvdArray1.length; i++) {
                    System.out.println(rcvdArray1[i]);
                }*/
            }

            clntSock.close(); // Fecha o socket.
            
            return rcvdArray;
    }
    
    public static void envia(Socket socket, int[] vector) throws IOException{

        System.out.println("Conectado ao servidor... enviando a mensagem");

        OutputStream out = socket.getOutputStream();



        out.write(Conversion.intToByte(vector));   //Envia vetor de inteiros para o pai

        // Recebe a mesma mensagem de volta 
        /*int totalBytesRcvd = 0;

        int bytesRcvd;
        
        byte[] byteBuffer = new byte[tam * 4]; //Buffer para receber vetor ordenado

        while (totalBytesRcvd < vector.length) {

            if ((bytesRcvd = in.read(byteBuffer, totalBytesRcvd, byteBuffer.length - totalBytesRcvd)) == -1) {
                throw new SocketException("Conexao fechada inesperadamente");
            }

            totalBytesRcvd += bytesRcvd;

        }

        System.out.println("Mensagem recebida: ");
        int[] resultVector = Conversion.byteToInt(byteBuffer);
        for (int i = 0; i < resultVector.length; i++) {
            System.out.println(resultVector[i]);
        }*/
    }
}
